package com.zhou.message.service;

import com.zhou.message.dao.MessageTemplate;
import com.zhou.message.dao.SendMessage;
import com.zhou.message.dao.SendMessageDetail;
import com.zhou.message.dto.SendMessagePageDto;
import com.zhou.message.dto.SystemMessagePageDto;
import com.zhou.message.dto.SystemMessageQueryDto;
import com.zhou.message.model.MessageReceiver;
import com.zhou.message.model.MessageSendModel;
import com.zhou.org.model.SendResult;

import java.util.List;
import java.util.Map;

public interface MessageService {
    List<SystemMessagePageDto> getReceivePageList(SystemMessageQueryDto dto);
    Map<String,Integer> getUserReceiveCount(Integer toUserId);
    List<SendMessagePageDto> getSendPageList(SystemMessageQueryDto dto);


    /**
     * 查询系统发送的消息
     */
    List<SystemMessagePageDto> getSendMessageList(SystemMessageQueryDto dto);

    /**
     * 查询消息发送人详情
     */
    List<SendMessageDetail> getSendMessageDetailList(Map<String, Object> map);


    /**
     * 添加新消息
     */
    int addMessage(SendMessage message);

    /**
     * 发送消息
     */
    SendResult sendSynMessage(MessageSendModel dto);

    /**
     * 通过消息模板发送消息
     * @param templateId 消息模板id
     * @param par        参数
     * @param receivers  额外的接收人
     */
    void sendMessageByTemplate(int templateId, Map<String, Object> par, List<MessageReceiver> receivers);
    void sendMessageByTemplate(String msgCode, Map<String, Object> par, List<MessageReceiver> receivers);
    void sendMessageByTemplate(MessageTemplate template, Map<String, Object> par, List<MessageReceiver> receivers);


    /**
     * 获得收信箱消息数量
     */
    int getReceiveCount(Map<String, Object> map);
}
